/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package documentadorrepositorio.fabricaRepositorio;

import documentadorrepositorio.repositorio.IGerenciadorRepositorio;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;

/**
 *
 * @author Vinicius
 */
public class FabricaRepositorio
{

    private static FabricaRepositorio instance = null;
    private Properties propertiesRepositorio = new Properties();
    private String nomeRepositorio;

    private FabricaRepositorio()
    {
        carregarRepositorios();
    }

    public static FabricaRepositorio getInstance()
    {
        if (instance == null)
        {
            instance = new FabricaRepositorio();
        }
        return instance;
    }

    private void carregarRepositorios()
    {
        try
        {
            propertiesRepositorio.load(FabricaRepositorio.class.getResourceAsStream("repositorios.properties"));
        } catch (IOException ex)
        {
        }
    }

    public ArrayList<Object> obtemRepositorios() throws Exception
    {
        return new ArrayList<Object> (propertiesRepositorio.keySet());
    }

    public IGerenciadorRepositorio create(String tipo) throws Exception
    {
        try
        {
            return (IGerenciadorRepositorio) Class.forName(propertiesRepositorio.getProperty(tipo)).newInstance();
        } catch (Exception e)
        {
            System.out.println(e.getMessage());
            throw new Exception("Referencia não existente.");
        }
    }
}
